import { defineStore } from 'pinia';
import { ref } from 'vue';
import { getUserInfo } from '../api/user.js';

// 定义用户信息存储
export const useUserStore = defineStore('user', () => {
  // 状态
  const userInfo = ref({});
  const isLoading = ref(false);
  const error = ref(null);

  // 获取用户信息
  const fetchUserInfo = async () => {
    isLoading.value = true;
    error.value = null;
    
    try {
      const res = await getUserInfo();
      if (res.code === 200 && res.data) {
        userInfo.value = res.data;
        return true;
      } else {
        error.value = res.msg || '获取用户信息失败';
        return false;
      }
    } catch (err) {
      console.error('获取用户信息出错:', err);
      error.value = '获取用户信息失败';
      return false;
    } finally {
      isLoading.value = false;
    }
  };

  // 更新用户信息
  const updateUserInfoState = (newInfo) => {
    userInfo.value = { ...userInfo.value, ...newInfo };
  };

  // 清除用户信息
  const clearUserInfo = () => {
    userInfo.value = {};
  };

  return {
    userInfo,
    isLoading,
    error,
    fetchUserInfo,
    updateUserInfoState,
    clearUserInfo
  };
});